package com.csg.boot.starter.builder;

import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 建造者模式抽象
 *
 * @author george
 */
public interface BaseBuilder<T, P> {

    /**
     * 建造对象
     *
     * @param p
     * @return
     */
    T build(P p);

    /**
     * 建造对象list
     *
     * @param list
     * @return
     */
    default List<T> build(List<P> list) {
        if (list != null) {
            return list.stream().map(this::build).collect(Collectors.toList());
        }
        return Collections.emptyList();
    }

}
